package cashpointer.core.support;

import com.opensymphony.xwork2.ActionContext;
import java.util.Map;

/**
 * Klasa wpomagajaca pobieranie danych.
 * @author wojciech topolski
 * @version 2009-03-25
 */
public class ContextStoreUtil implements ContextStore {

    // Kontekst akcji.
    private ActionContext context;

    // Kontenre do przechowywania danych wspolnych dla akcji.
    private Map contextMap;

    /**
     * Konstruktor
     */
    public ContextStoreUtil() {
        context = ActionContext.getContext();
        contextMap = context.getContextMap();
    }

    /**
     * Funkcja pobiera nazwe wpisu i  zwraca jego wartosc.
     * @param name String
     * @return String
     */
    private String getValueByName(String name) {
        String value = null;

        if (contextMap != null) {
            if (contextMap.containsKey(name)) {
                value = "" + contextMap.get(name);
            }
        }

        return value;
    }

    /**
     * Funkcja uswawia pole o podanej nazwie i wartosci.
     * @param name String
     * @param value String
     */
    private void setValueByName(String name, String value) {
        if (contextMap != null) {
            contextMap.put(name, value);
        }
    }

    /**
     * Funkcja zwraca tekst wiadomosci.
     * @return String
     */
    public String getMSG() {
        return getValueByName("msg");
    }

    /**
     * Funkcja pobiera tekst wiadomosci.
     * @param value String
     */
    public void setMSG(String value) {
        setValueByName("msg", value);
    }

    /**
     * Funkcja zwraca jak ustawiony jest parametr wyjscia.
     * @return Boolean
     */
    public Boolean getOutputMode() {
        return "yes".equalsIgnoreCase(getValueByName("isOut"));
    }

    /**
     * Funkcja pobiera ustawienie parametru wyjscia.
     * @param value Boolean
     */
    public void setOutputMode(Boolean value) {
        String mode = (value) ? "yes" : "no";
        this.setValueByName("isOut", mode);
    }

    /**
     * Funkcja czysci zawartosc wiadomosci.
     */
    public void cleanMSG() {
        setValueByName("msg", "");
    }

}
